Verilog-A 语言概述
什么是 Verilog-A / Verilog-AMS
- Verilog-A:描述**连续信号(模拟系统)**的语言,是 Verilog-AMS 的连续时间子集。兼容 SPICE 描述语言,1996 年由 Analog Verilog International(后并入 Accellera)发布。
- Verilog-AMS:2000 年发布,混合了 Verilog(数字)和 Verilog-A(模拟)语法,增加混合信号结构,支持模拟、数字、混合信号描述与仿真。
- 2003 年 Verilog-AMS 2.1 加入直接使用 Verilog 的支持。
⚠️ Verilog-A 不是 Verilog:Verilog/VHDL 描述离散逻辑信号;Verilog-A 描述连续电压/电流,无法综合,只能用于仿真建模。
组成关系
Verilog-AMS(混合信号)
├── Verilog(数字域,事件驱动)
└── Verilog-A(模拟域,连续时间)
└── 共享 Natures / Disciplines / 模拟算子
Verilog-A 能做什么
- 自顶向下的设计流程:顶层模块未完成电路时即可用模型验证系统。
- 项目可行性分析:关键模块参数要求验证,避免人力浪费。
- 系统级建模与仿真:高层抽象描述模块行为,大规模系统仿真速度远快于 SPICE。
- 快捷验证:比 SPICE 模型简单高效(书中例子:SPICE 跑 3 天的顶层,Verilog-A 30 分钟出结果)。
- 提供 IP 模型:给客户试用而不泄露电路细节。
- 板级/芯片级系统模型:各层次统一描述。
与 SPICE 模型对比
| 维度 | SPICE 模型 | Verilog-A/AMS |
|---|---|---|
| 精确度 | 高(可 400+ 参数) | 取决于抽象层次 |
| 仿真速度 | 慢 | 快(可快约 300 倍,配合事件驱动) |
| 书写复杂度 | 高 | 低 |
| 灵活性/复用性 | 差 | 好 |
| 适用场景 | 器件/电路级精确仿真 | 系统级、行为级、IP 建模 |
WREAL(了解)
- wreal:Verilog-AMS 的实数网络类型,用有限浮点采样点模拟电路工作曲线,类似 Fast-SPICE 查表。
- 优点:速度快(无需 SPICE 迭代,事件驱动计算)。
- 缺点:含反馈电路不准确、精度较低;需要很好预测真实电路行为。
- 适用:大规模系统中对精度要求不高的模块。
仿真工具
| 工具 | 厂商 | 说明 |
|---|---|---|
| Spectre / AMS | Cadence | 最早支持 Verilog-A,支持最全面 |
| ELDO / ADMS | Mentor | 支持 Verilog-A |
| Hspice | Synopsys | 需 Hspice_va 额外 License |
| ngspice | 开源 | ADMS 转换 Verilog-A→C |
| Qucs | 开源 | 支持 Verilog/VHDL/Verilog-A |
| Symica | 免费商业 | 受限免费版 |
ADMS(Automated Device Model Synthesizer)可将 Verilog-A/AMS 转 C 代码供类 SPICE 仿真器使用。
何时使用混合信号描述(作者建议)
- 数字功能模块 → 直接用 Verilog/VHDL,不用混合信号。
- 高层大模块 → 不推荐混合信号(易错、精度缺失)。
- 模块内部混合 → 认真考虑哪些网线/端口定义为数字信号及其收益。
- 数模混合描述代价:需额外连接模块、丢失数字域模拟特性(延时/噪声/摆率)、学习成本。
关键字速查
Verilog-A 关键字包含但不限于:module/endmodule、analog、input/output/inout、electrical、parameter、integer/real、genvar、branch、analog function/endfunction、if/else/case、for/while/repeat、@(cross/above/timer/initial_step/final_step/absdelta)、<+(贡献运算符)、ddt/idt/idtmod/ddx、laplace_nd/zp/zd/np、zi_zp/zd/np/nd、limexp、transition/slew/absdelay、wreal、nature/discipline/potential/flow 等。
完整清单见附录(吴顺珉书附录 A),共 200+ 个。
参考来源
- 吴顺珉《Verilog-A/AMS系统设计与仿真》第 1 章
- OVI Verilog-A LRM v1.0
- Cadence Verilog-A Language Reference
相关笔记
- 语法细节 → 02 - VerilogA 语法基础
- 数据类型 → 03 - VerilogA 数据类型与变量
- 混合信号 → 12 - VerilogA 混合信号仿真
- 模块结构 → 05 - VerilogA 模块定义与实例化